package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.AttendPunchDeptAddDTO;
import org.jsola.hr.dto.AttendPunchDeptUpdateDTO;
import org.jsola.hr.query.AttendPunchDeptQuery;
import org.jsola.hr.vo.AttendPunchDeptListVO;
import org.jsola.hr.vo.AttendPunchDeptVO;

import java.util.List;

/**
 * @author zhr
 */
@Api(tags = "hr-考勤打卡参与部门")
public interface IAttendPunchDeptControllerAPI {

    /**
     * 新增考勤打卡参与部门
     * @param attendPunchDeptAddDTO 考勤打卡参与部门新增实体
     * @return 考勤打卡参与部门展示对象
     */
    @ApiOperation(value = "新增考勤打卡参与部门")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptAddDTO", dataType = "AttendPunchDeptAddDTO", value = "新增考勤打卡参与部门", paramType = "body")
    })
    Result<AttendPunchDeptVO> save(AttendPunchDeptAddDTO attendPunchDeptAddDTO);


    /**
     * 修改考勤打卡参与部门
     * @param attendPunchDeptUpdateDTO 考勤打卡参与部门
     * @return 更新数量
     */
    @ApiOperation(value = "修改考勤打卡参与部门")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptUpdateDTO", dataType = "AttendPunchDeptUpdateDTO", value = "修改考勤打卡参与部门", paramType = "body")
    })
    Result<Integer> update(AttendPunchDeptUpdateDTO attendPunchDeptUpdateDTO);




    /**
     * 删除单个考勤打卡参与部门，彻底删除
     * @param attendPunchDeptId 考勤打卡参与部门id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个考勤打卡参与部门，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptId", dataType = "String", value = "考勤打卡参与部门id", paramType = "path")
    })
    Result<Integer> delete(String attendPunchDeptId);


    /**
     * 批量删除考勤打卡参与部门，彻底删除
     * @param attendPunchDeptIds 考勤打卡参与部门id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除考勤打卡参与部门，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptIds", dataType = "String[]", value = "考勤打卡参与部门id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] attendPunchDeptIds);


    /**
     * 根据考勤打卡参与部门id查询考勤打卡参与部门详情
     * @param attendPunchDeptId 考勤打卡参与部门id
     * @return 考勤打卡参与部门详情
     */
    @ApiOperation(value="根据考勤打卡参与部门id查询考勤打卡参与部门详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptId", dataType = "String", value = "考勤打卡参与部门id", paramType = "path")
    })
    Result<AttendPunchDeptVO> findById(String attendPunchDeptId);


    /**
     * 查询考勤打卡参与部门
     * @param attendPunchDeptQuery 考勤打卡参与部门查询参数
     * @return page
     */
    @ApiOperation(value="查询考勤打卡参与部门")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptQuery", dataType = "AttendPunchDeptQuery", value = "考勤打卡参与部门查询参数", paramType = "query")
    })
    Result<List<AttendPunchDeptListVO>> listAll(AttendPunchDeptQuery attendPunchDeptQuery);


     /**
     * 分页查询考勤打卡参与部门
     * @param attendPunchDeptQuery 考勤打卡参与部门查询参数
     * @return page
     */
    @ApiOperation(value="分页查询考勤打卡参与部门")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "attendPunchDeptQuery", dataType = "AttendPunchDeptQuery", value = "考勤打卡参与部门查询参数", paramType = "query")
    })
    Result<Page<AttendPunchDeptListVO>> page(AttendPunchDeptQuery attendPunchDeptQuery);


}

